#ifndef PRODUCT_H
#define PRODUCT_H

#include <QObject>

class Product: public QObject
{
    Q_OBJECT
public:
    virtual ~Product() = 0;
    Q_PROPERTY(QString icon READ icon NOTIFY iconChanged)
    QString m_icon;

    QString icon() const
    {
        return m_icon;
    }
signals:
    void iconChanged(QString icon);
protected:
    Product();

signals:

public slots:
};

class ConcreteProduct1: public Product
{
    Q_OBJECT
public:
    ~ConcreteProduct1();
    ConcreteProduct1();
};

class ConcreteProduct2: public Product
{
    Q_OBJECT
public:
    ~ConcreteProduct2();
    ConcreteProduct2();
};

#endif // PRODUCT_H
